package com.ljx.controller;


import com.ljx.JwtUtils;
import com.ljx.R;
import com.ljx.UcenterMemberOrder;
import com.ljx.pojo.UcenterMember;
import com.ljx.pojo.vo.RegisterVo;
import com.ljx.service.impl.UcenterMemberServiceImpl;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;

/**
 * <p>
 * 会员表 前端控制器
 * </p>
 *
 * @author 李加喜
 * @since 2020-09-29
 */
@RestController
@RequestMapping("/eduucenter/member")
@CrossOrigin
public class UcenterMemberController {
    @Autowired
    private UcenterMemberServiceImpl memberService;

    //实现登录的接口
    @PostMapping("/login")
    public R loginUser(@RequestBody UcenterMember ucenterMember){
        //登录成功之后返回一个token值  token的值是通过JWT进行生成的
        String token=memberService.login(ucenterMember);
        return R.ok().data("token",token);
    }
    //实现注册接口
    @PostMapping("/register")
    public R registerUser(@RequestBody RegisterVo registerVo){
        memberService.registerUser(registerVo);
        return R.ok();
    }
    //登录之后就会生成一个token 我们就可以根据这个Token来获取用户的所有信息
    //根据token获取用户信息
    @GetMapping("/getMenberInfo")
    public R getMemberInfo(HttpServletRequest request){
        //获取用户的Id
        String id = JwtUtils.getMemberIdByJwtToken(request);
        UcenterMember member = memberService.getById(id);
        return R.ok().data("userIfo",member);
    }
    //根据用户的Id获取用户信息  (生成订单模板里面使用)
    // 这里单独指定一个对象 因为两个模块要操作同一个对象  所以按照规范使其都操作的类放在公共类里面
    @PostMapping("/getMember/{userId}")
    public UcenterMemberOrder getMenById(@PathVariable String userId){
        UcenterMember member = memberService.getById(userId);
        UcenterMemberOrder memberOrder = new UcenterMemberOrder();
        BeanUtils.copyProperties(member,memberOrder);
        return memberOrder;
    }
    //以下方法作用于统计分析方法中
    //查询某一天里注册的人数
    @GetMapping("/countRegister/{day}")
    public R countRegister(@PathVariable String day){
        Integer count=memberService.countRegister(day);
        return R.ok().data("count",count);
    }
}

